home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / PhonePanelUI.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  40KB  |  1,779 lines

  1. /*
  2. **    PhonePanelUI.c
  3. **
  4. **    The phonebook user interface creation routines
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16.     /* The gadget IDs are in there */
  17.  
  18. #ifndef _PHONEPANEL_H
  19. #include "PhonePanel.h"
  20. #endif    /* _PHONEPANEL_H */
  21.  
  22. LayoutHandle *
  23. CreateEditorHandle(PhoneListContext *Context,BOOL Activate)
  24. {
  25.     STATIC LONG LabelTable1[] =
  26.     {
  27.         MSG_PHONEBOOK_SETTINGS_SERIAL_TXT,
  28.         MSG_PHONEBOOK_SETTINGS_MODEM_TXT,
  29.         MSG_PHONEBOOK_SETTINGS_SCREEN_TXT,
  30.         MSG_PHONEBOOK_SETTINGS_TERMINAL_TXT,
  31.         MSG_PHONEBOOK_SETTINGS_EMULATION_TXT,
  32.         MSG_PHONEBOOK_SETTINGS_CLIPBOARD_TXT,
  33.         MSG_PHONEBOOK_SETTINGS_CAPTURE_TXT,
  34.         MSG_PHONEBOOK_SETTINGS_COMMANDS_TXT,
  35.         -1
  36.     };
  37.  
  38.     STATIC LONG LabelTable2[] =
  39.     {
  40.         MSG_PHONEBOOK_SETTINGS_MISCELLANEOUS_TXT,
  41.         MSG_PHONEBOOK_SETTINGS_PATHS_TXT,
  42.         MSG_PHONEBOOK_SETTINGS_TRANSFER_TXT,
  43.         MSG_PHONEBOOK_SETTINGS_TRANSLATION_TXT,
  44.         MSG_PHONEBOOK_SETTINGS_FUNCTION_KEYS_TXT,
  45.         MSG_PHONEBOOK_SETTINGS_CURSOR_KEYS_TXT,
  46.         MSG_PHONEBOOK_SETTINGS_FAST_MACROS_TXT,
  47.         MSG_PHONEBOOK_SETTINGS_RATES_TXT,
  48.         -1
  49.     };
  50.  
  51.     PhoneNode                *Node;
  52.     LONG                     Count;
  53.  
  54.     LayoutHandle            *Handle;
  55.     BOOL                     IsFirst,IsLast,Disabled,RatesValid;
  56.     LONG                     LabelLen1,LabelLen2;
  57.     struct Configuration    *LocalConfig;
  58.     LONG                     i,Len;
  59.  
  60.     Node = Context->SelectedNode;
  61.     Count = Context->PhoneHandle->DialMarker;
  62.  
  63.     if(Node)
  64.     {
  65.         IsFirst            = (Node->Entry->Count == -1 || Node->Entry->Count == 0);
  66.         IsLast            = (Node->Entry->Count == -1 || Node->Entry->Count == Count - 1);
  67.         Disabled        = FALSE;
  68.         LocalConfig        = Node->Entry->Config;
  69.         RatesValid        = (!IsListEmpty((struct List *)&Node->Entry->TimeDateList) && !Node->Entry->Header->NoRates);
  70.     }
  71.     else
  72.     {
  73.         IsFirst            = TRUE;
  74.         IsLast            = TRUE;
  75.         Disabled        = TRUE;
  76.         LocalConfig        = NULL;
  77.         RatesValid        = FALSE;
  78.     }
  79.  
  80.     if(Handle = LT_CreateHandleTags(Context->Window->WScreen,
  81.         LAHN_LocaleHook,&LocaleHook,
  82.     TAG_DONE))
  83.     {
  84.         for(i = LabelLen1 = 0 ; LabelTable1[i] != -1 ; i++)
  85.         {
  86.             Len = LT_LabelChars(Handle,LocaleString(LabelTable1[i]));
  87.  
  88.             if(Len > LabelLen1)
  89.                 LabelLen1 = Len;
  90.         }
  91.  
  92.         for(i = LabelLen2 = 0 ; LabelTable2[i] != -1 ; i++)
  93.         {
  94.             Len = LT_LabelChars(Handle,LocaleString(LabelTable2[i]));
  95.  
  96.             if(Len > LabelLen2)
  97.                 LabelLen2 = Len;
  98.         }
  99.  
  100.         LT_New(Handle,
  101.             LA_Type,    VERTICAL_KIND,
  102.         TAG_DONE);
  103.         {
  104.             LT_New(Handle,
  105.                 LA_Type,    HORIZONTAL_KIND,
  106.             TAG_DONE);
  107.             {
  108.                 LT_New(Handle,
  109.                     LA_Type,        VERTICAL_KIND,
  110.                     LA_LabelID,        MSG_PHONEBOOK_ENTRY_DATA_TXT,
  111.                 TAG_DONE);
  112.                 {
  113.                     LT_New(Handle,
  114.                         LA_Type,        STRING_KIND,
  115.                         LA_LabelID,        MSG_PHONEBOOK_SYSTEM_NAME_TXT,
  116.                         LA_Chars,        30,
  117.                         LA_ID,            GAD_SYSTEM_NAME,
  118.                         GTST_String,    Node ? Node->Entry->Header->Name : (STRPTR)"",
  119.                         GTST_MaxChars,    sizeof(Node->Entry->Header->Name) - 1,
  120.                         GA_Disabled,    Disabled,
  121.                     TAG_DONE);
  122.  
  123.                     LT_New(Handle,
  124.                         LA_Type,        STRING_KIND,
  125.                         LA_LabelID,        MSG_PHONEBOOK_COMMENT_TXT,
  126.                         LA_ID,            GAD_COMMENT,
  127.                         GTST_String,    Node ? Node->Entry->Header->Comment : (STRPTR)"",
  128.                         GTST_MaxChars,    sizeof(Node->Entry->Header->Comment) - 1,
  129.                         GA_Disabled,    Disabled,
  130.                     TAG_DONE);
  131.  
  132.                     LT_New(Handle,
  133.                         LA_Type,        STRING_KIND,
  134.                         LA_LabelID,        MSG_PHONEBOOK_NUMBERS_TXT,
  135.                         LA_ID,            GAD_NUMBERS,
  136.                         GTST_String,    Node ? Node->Entry->Header->Number : (STRPTR)"",
  137.                         GTST_MaxChars,    sizeof(Node->Entry->Header->Number),
  138.                         GA_Disabled,    Disabled,
  139.                     TAG_DONE);
  140.  
  141.                     LT_New(Handle,
  142.                         LA_Type,        CHECKBOX_KIND,
  143.                         LA_LabelID,        MSG_PHONEBOOK_QUICK_MENU_TXT,
  144.                         LA_ID,            GAD_QUICK_MENU,
  145.                         GTCB_Checked,    Node ? Node->Entry->Header->QuickMenu : FALSE,
  146.                         GA_Disabled,    Disabled,
  147.                     TAG_DONE);
  148.  
  149.                     LT_New(Handle,
  150.                         LA_Type,        CHECKBOX_KIND,
  151.                         LA_LabelID,        MSG_PHONEPANEL_AUTO_DIAL_TXT,
  152.                         LA_ID,            GAD_AUTODIAL,
  153.                         GTCB_Checked,    Node ? Node->Entry->Header->AutoDial : FALSE,
  154.                         GA_Disabled,    Disabled,
  155.                     TAG_DONE);
  156.  
  157.                     LT_New(Handle,
  158.                         LA_Type,        XBAR_KIND,
  159.                     TAG_DONE);
  160.  
  161.                     LT_New(Handle,
  162.                         LA_Type,        CHECKBOX_KIND,
  163.                         LA_LabelID,        MSG_HIDE_TXT,
  164.                         LA_ID,            GAD_HIDE_USERNAME_PASSWORD,
  165.                         GTCB_Checked,    TRUE,
  166.                     TAG_DONE);
  167.  
  168.                     LT_New(Handle,
  169.                         LA_Type,        STRING_KIND,
  170.                         LA_LabelID,        MSG_PHONEBOOK_USER_NAME_TXT,
  171.                         LA_ID,            GAD_USER_NAME,
  172.                         GTST_String,    "",
  173.                         GTST_MaxChars,    structsizeof(PhoneHeader,UserName) - 1,
  174.                         GA_Disabled,    TRUE,
  175.                     TAG_DONE);
  176.  
  177.                     LT_New(Handle,
  178.                         LA_Type,        STRING_KIND,
  179.                         LA_LabelID,        MSG_PHONEBOOK_LOGIN_PASSWORD_TXT,
  180.                         LA_ID,            GAD_USER_PASSWORD,
  181.                         LAST_LastGadget,TRUE,
  182.                         GTST_String,    "",
  183.                         GTST_MaxChars,    structsizeof(PhoneHeader,Password) - 1,
  184.                         GA_Disabled,    TRUE,
  185.                     TAG_DONE);
  186.  
  187.                     LT_EndGroup(Handle);
  188.                 }
  189.  
  190.                 LT_New(Handle,
  191.                     LA_Type,        HORIZONTAL_KIND,
  192.                     LA_LabelID,        MSG_PHONEBOOK_SETTINGS_TXT,
  193.                 TAG_DONE);
  194.                 {
  195.                     LT_New(Handle,
  196.                         LA_Type,        VERTICAL_KIND,
  197.                     TAG_DONE);
  198.                     {
  199.                         LT_New(Handle,
  200.                             LA_Type,        HORIZONTAL_KIND,
  201.                         TAG_DONE);
  202.                         {
  203.                             LT_New(Handle,
  204.                                 LA_Type,        CHECKBOX_KIND,
  205.                                 LA_ID,            GAD_SERIAL_STATE,
  206.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->SerialConfig != NULL) : FALSE,
  207.                                 GA_Disabled,    Disabled,
  208.                             TAG_DONE);
  209.  
  210.                             LT_New(Handle,
  211.                                 LA_Type,        BUTTON_KIND,
  212.                                 LA_Chars,        LabelLen1,
  213.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_SERIAL_TXT,
  214.                                 LA_ID,            GAD_SERIAL_EDIT,
  215.                                 GA_Disabled,    Disabled,
  216.                                 LABT_Smaller,    TRUE,
  217.                             TAG_DONE);
  218.  
  219.                             LT_EndGroup(Handle);
  220.                         }
  221.  
  222.                         LT_New(Handle,
  223.                             LA_Type,        HORIZONTAL_KIND,
  224.                         TAG_DONE);
  225.                         {
  226.                             LT_New(Handle,
  227.                                 LA_Type,        CHECKBOX_KIND,
  228.                                 LA_ID,            GAD_MODEM_STATE,
  229.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->ModemConfig != NULL) : FALSE,
  230.                                 GA_Disabled,    Disabled,
  231.                             TAG_DONE);
  232.  
  233.                             LT_New(Handle,
  234.                                 LA_Type,        BUTTON_KIND,
  235.                                 LA_Chars,        LabelLen1,
  236.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_MODEM_TXT,
  237.                                 LA_ID,            GAD_MODEM_EDIT,
  238.                                 GA_Disabled,    Disabled,
  239.                                 LABT_Smaller,    TRUE,
  240.                             TAG_DONE);
  241.  
  242.                             LT_EndGroup(Handle);
  243.                         }
  244.  
  245.                         LT_New(Handle,
  246.                             LA_Type,        HORIZONTAL_KIND,
  247.                         TAG_DONE);
  248.                         {
  249.                             LT_New(Handle,
  250.                                 LA_Type,        CHECKBOX_KIND,
  251.                                 LA_ID,            GAD_SCREEN_STATE,
  252.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->ScreenConfig != NULL) : FALSE,
  253.                                 GA_Disabled,    Disabled,
  254.                             TAG_DONE);
  255.  
  256.                             LT_New(Handle,
  257.                                 LA_Type,        BUTTON_KIND,
  258.                                 LA_Chars,        LabelLen1,
  259.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_SCREEN_TXT,
  260.                                 LA_ID,            GAD_SCREEN_EDIT,
  261.                                 GA_Disabled,    Disabled,
  262.                                 LABT_Smaller,    TRUE,
  263.                             TAG_DONE);
  264.  
  265.                             LT_EndGroup(Handle);
  266.                         }
  267.  
  268.                         LT_New(Handle,
  269.                             LA_Type,        HORIZONTAL_KIND,
  270.                         TAG_DONE);
  271.                         {
  272.                             LT_New(Handle,
  273.                                 LA_Type,        CHECKBOX_KIND,
  274.                                 LA_ID,            GAD_TERMINAL_STATE,
  275.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->TerminalConfig != NULL) : FALSE,
  276.                                 GA_Disabled,    Disabled,
  277.                             TAG_DONE);
  278.  
  279.                             LT_New(Handle,
  280.                                 LA_Type,        BUTTON_KIND,
  281.                                 LA_Chars,        LabelLen1,
  282.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_TERMINAL_TXT,
  283.                                 LA_ID,            GAD_TERMINAL_EDIT,
  284.                                 GA_Disabled,    Disabled,
  285.                                 LABT_Smaller,    TRUE,
  286.                             TAG_DONE);
  287.  
  288.                             LT_EndGroup(Handle);
  289.                         }
  290.  
  291.                         LT_New(Handle,
  292.                             LA_Type,        HORIZONTAL_KIND,
  293.                         TAG_DONE);
  294.                         {
  295.                             LT_New(Handle,
  296.                                 LA_Type,        CHECKBOX_KIND,
  297.                                 LA_ID,            GAD_EMULATION_STATE,
  298.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->EmulationConfig != NULL) : FALSE,
  299.                                 GA_Disabled,    Disabled,
  300.                             TAG_DONE);
  301.  
  302.                             LT_New(Handle,
  303.                                 LA_Type,        BUTTON_KIND,
  304.                                 LA_Chars,        LabelLen1,
  305.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_EMULATION_TXT,
  306.                                 LA_ID,            GAD_EMULATION_EDIT,
  307.                                 GA_Disabled,    Disabled,
  308.                                 LABT_Smaller,    TRUE,
  309.                             TAG_DONE);
  310.  
  311.                             LT_EndGroup(Handle);
  312.                         }
  313.  
  314.                         LT_New(Handle,
  315.                             LA_Type,        HORIZONTAL_KIND,
  316.                         TAG_DONE);
  317.                         {
  318.                             LT_New(Handle,
  319.                                 LA_Type,        CHECKBOX_KIND,
  320.                                 LA_ID,            GAD_CLIPBOARD_STATE,
  321.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->ClipConfig != NULL) : FALSE,
  322.                                 GA_Disabled,    Disabled,
  323.                             TAG_DONE);
  324.  
  325.                             LT_New(Handle,
  326.                                 LA_Type,        BUTTON_KIND,
  327.                                 LA_Chars,        LabelLen1,
  328.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_CLIPBOARD_TXT,
  329.                                 LA_ID,            GAD_CLIPBOARD_EDIT,
  330.                                 GA_Disabled,    Disabled,
  331.                                 LABT_Smaller,    TRUE,
  332.                             TAG_DONE);
  333.  
  334.                             LT_EndGroup(Handle);
  335.                         }
  336.  
  337.                         LT_New(Handle,
  338.                             LA_Type,        HORIZONTAL_KIND,
  339.                         TAG_DONE);
  340.                         {
  341.                             LT_New(Handle,
  342.                                 LA_Type,        CHECKBOX_KIND,
  343.                                 LA_ID,            GAD_CAPTURE_STATE,
  344.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->CaptureConfig != NULL) : FALSE,
  345.                                 GA_Disabled,    Disabled,
  346.                             TAG_DONE);
  347.  
  348.                             LT_New(Handle,
  349.                                 LA_Type,        BUTTON_KIND,
  350.                                 LA_Chars,        LabelLen1,
  351.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_CAPTURE_TXT,
  352.                                 LA_ID,            GAD_CAPTURE_EDIT,
  353.                                 GA_Disabled,    Disabled,
  354.                                 LABT_Smaller,    TRUE,
  355.                             TAG_DONE);
  356.  
  357.                             LT_EndGroup(Handle);
  358.                         }
  359.  
  360.                         LT_New(Handle,
  361.                             LA_Type,        HORIZONTAL_KIND,
  362.                         TAG_DONE);
  363.                         {
  364.                             LT_New(Handle,
  365.                                 LA_Type,        CHECKBOX_KIND,
  366.                                 LA_ID,            GAD_COMMAND_STATE,
  367.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->CommandConfig != NULL) : FALSE,
  368.                                 GA_Disabled,    Disabled,
  369.                             TAG_DONE);
  370.  
  371.                             LT_New(Handle,
  372.                                 LA_Type,        BUTTON_KIND,
  373.                                 LA_Chars,        LabelLen1,
  374.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_COMMANDS_TXT,
  375.                                 LA_ID,            GAD_COMMAND_EDIT,
  376.                                 GA_Disabled,    Disabled,
  377.                                 LABT_Smaller,    TRUE,
  378.                             TAG_DONE);
  379.  
  380.                             LT_EndGroup(Handle);
  381.                         }
  382.  
  383.                         LT_EndGroup(Handle);
  384.                     }
  385.  
  386.                     LT_New(Handle,
  387.                         LA_Type,        VERTICAL_KIND,
  388.                     TAG_DONE);
  389.                     {
  390.                         LT_New(Handle,
  391.                             LA_Type,        HORIZONTAL_KIND,
  392.                         TAG_DONE);
  393.                         {
  394.                             LT_New(Handle,
  395.                                 LA_Type,        CHECKBOX_KIND,
  396.                                 LA_ID,            GAD_MISC_STATE,
  397.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->MiscConfig != NULL) : FALSE,
  398.                                 GA_Disabled,    Disabled,
  399.                             TAG_DONE);
  400.  
  401.                             LT_New(Handle,
  402.                                 LA_Type,        BUTTON_KIND,
  403.                                 LA_Chars,        LabelLen2,
  404.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_MISCELLANEOUS_TXT,
  405.                                 LA_ID,            GAD_MISC_EDIT,
  406.                                 GA_Disabled,    Disabled,
  407.                                 LABT_Smaller,    TRUE,
  408.                             TAG_DONE);
  409.  
  410.                             LT_EndGroup(Handle);
  411.                         }
  412.  
  413.                         LT_New(Handle,
  414.                             LA_Type,        HORIZONTAL_KIND,
  415.                         TAG_DONE);
  416.                         {
  417.                             LT_New(Handle,
  418.                                 LA_Type,        CHECKBOX_KIND,
  419.                                 LA_ID,            GAD_PATH_STATE,
  420.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->PathConfig != NULL) : FALSE,
  421.                                 GA_Disabled,    Disabled,
  422.                             TAG_DONE);
  423.  
  424.                             LT_New(Handle,
  425.                                 LA_Type,        BUTTON_KIND,
  426.                                 LA_Chars,        LabelLen2,
  427.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_PATHS_TXT,
  428.                                 LA_ID,            GAD_PATH_EDIT,
  429.                                 GA_Disabled,    Disabled,
  430.                                 LABT_Smaller,    TRUE,
  431.                             TAG_DONE);
  432.  
  433.                             LT_EndGroup(Handle);
  434.                         }
  435.  
  436.                         LT_New(Handle,
  437.                             LA_Type,        HORIZONTAL_KIND,
  438.                         TAG_DONE);
  439.                         {
  440.                             LT_New(Handle,
  441.                                 LA_Type,        CHECKBOX_KIND,
  442.                                 LA_ID,            GAD_TRANSFER_STATE,
  443.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->TransferConfig != NULL) : FALSE,
  444.                                 GA_Disabled,    Disabled,
  445.                             TAG_DONE);
  446.  
  447.                             LT_New(Handle,
  448.                                 LA_Type,        BUTTON_KIND,
  449.                                 LA_Chars,        LabelLen2,
  450.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_TRANSFER_TXT,
  451.                                 LA_ID,            GAD_TRANSFER_EDIT,
  452.                                 GA_Disabled,    Disabled,
  453.                                 LABT_Smaller,    TRUE,
  454.                             TAG_DONE);
  455.  
  456.                             LT_EndGroup(Handle);
  457.                         }
  458.  
  459.                         LT_New(Handle,
  460.                             LA_Type,        HORIZONTAL_KIND,
  461.                         TAG_DONE);
  462.                         {
  463.                             LT_New(Handle,
  464.                                 LA_Type,        CHECKBOX_KIND,
  465.                                 LA_ID,            GAD_TRANSLATION_STATE,
  466.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->TranslationFileName != NULL) : FALSE,
  467.                                 GA_Disabled,    Disabled,
  468.                             TAG_DONE);
  469.  
  470.                             LT_New(Handle,
  471.                                 LA_Type,        BUTTON_KIND,
  472.                                 LA_Chars,        LabelLen2,
  473.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_TRANSLATION_TXT,
  474.                                 LA_ID,            GAD_TRANSLATION_EDIT,
  475.                                 GA_Disabled,    Disabled,
  476.                                 LABT_Smaller,    TRUE,
  477.                             TAG_DONE);
  478.  
  479.                             LT_EndGroup(Handle);
  480.                         }
  481.  
  482.                         LT_New(Handle,
  483.                             LA_Type,        HORIZONTAL_KIND,
  484.                         TAG_DONE);
  485.                         {
  486.                             LT_New(Handle,
  487.                                 LA_Type,        CHECKBOX_KIND,
  488.                                 LA_ID,            GAD_MACRO_STATE,
  489.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->MacroFileName != NULL) : FALSE,
  490.                                 GA_Disabled,    Disabled,
  491.                             TAG_DONE);
  492.  
  493.                             LT_New(Handle,
  494.                                 LA_Type,        BUTTON_KIND,
  495.                                 LA_Chars,        LabelLen2,
  496.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_FUNCTION_KEYS_TXT,
  497.                                 LA_ID,            GAD_MACRO_EDIT,
  498.                                 GA_Disabled,    Disabled,
  499.                                 LABT_Smaller,    TRUE,
  500.                             TAG_DONE);
  501.  
  502.                             LT_EndGroup(Handle);
  503.                         }
  504.  
  505.                         LT_New(Handle,
  506.                             LA_Type,        HORIZONTAL_KIND,
  507.                         TAG_DONE);
  508.                         {
  509.                             LT_New(Handle,
  510.                                 LA_Type,        CHECKBOX_KIND,
  511.                                 LA_ID,            GAD_CURSOR_STATE,
  512.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->CursorFileName != NULL) : FALSE,
  513.                                 GA_Disabled,    Disabled,
  514.                             TAG_DONE);
  515.  
  516.                             LT_New(Handle,
  517.                                 LA_Type,        BUTTON_KIND,
  518.                                 LA_Chars,        LabelLen2,
  519.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_CURSOR_KEYS_TXT,
  520.                                 LA_ID,            GAD_CURSOR_EDIT,
  521.                                 GA_Disabled,    Disabled,
  522.                                 LABT_Smaller,    TRUE,
  523.                             TAG_DONE);
  524.  
  525.                             LT_EndGroup(Handle);
  526.                         }
  527.  
  528.                         LT_New(Handle,
  529.                             LA_Type,        HORIZONTAL_KIND,
  530.                         TAG_DONE);
  531.                         {
  532.                             LT_New(Handle,
  533.                                 LA_Type,        CHECKBOX_KIND,
  534.                                 LA_ID,            GAD_FASTMACRO_STATE,
  535.                                 GTCB_Checked,    LocalConfig ? (LocalConfig->FastMacroFileName != NULL) : FALSE,
  536.                                 GA_Disabled,    Disabled,
  537.                             TAG_DONE);
  538.  
  539.                             LT_New(Handle,
  540.                                 LA_Type,        BUTTON_KIND,
  541.                                 LA_Chars,        LabelLen2,
  542.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_FAST_MACROS_TXT,
  543.                                 LA_ID,            GAD_FASTMACRO_EDIT,
  544.                                 GA_Disabled,    Disabled,
  545.                                 LABT_Smaller,    TRUE,
  546.                             TAG_DONE);
  547.  
  548.                             LT_EndGroup(Handle);
  549.                         }
  550.  
  551.                         LT_New(Handle,
  552.                             LA_Type,        HORIZONTAL_KIND,
  553.                         TAG_DONE);
  554.                         {
  555.                             LT_New(Handle,
  556.                                 LA_Type,        CHECKBOX_KIND,
  557.                                 LA_ID,            GAD_RATE_STATE,
  558.                                 GTCB_Checked,    RatesValid,
  559.                                 GA_Disabled,    Disabled,
  560.                             TAG_DONE);
  561.  
  562.                             LT_New(Handle,
  563.                                 LA_Type,        BUTTON_KIND,
  564.                                 LA_Chars,        LabelLen2,
  565.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_RATES_TXT,
  566.                                 LA_ID,            GAD_RATE_EDIT,
  567.                                 GA_Disabled,    Disabled,
  568.                                 LABT_Smaller,    TRUE,
  569.                             TAG_DONE);
  570.  
  571.                             LT_EndGroup(Handle);
  572.                         }
  573.  
  574.                         LT_EndGroup(Handle);
  575.                     }
  576.  
  577.                     LT_EndGroup(Handle);
  578.                 }
  579.  
  580.                 LT_EndGroup(Handle);
  581.             }
  582.  
  583.             LT_New(Handle,
  584.                 LA_Type,        VERTICAL_KIND,
  585.             TAG_DONE);
  586.             {
  587.                 LT_New(Handle,
  588.                     LA_Type,        XBAR_KIND,
  589.                     LAXB_FullSize,    TRUE,
  590.                 TAG_DONE);
  591.  
  592.                 LT_EndGroup(Handle);
  593.             }
  594.  
  595.             LT_New(Handle,
  596.                 LA_Type,        HORIZONTAL_KIND,
  597.                 LAGR_SameSize,    TRUE,
  598.                 LAGR_Spread,    TRUE,
  599.             TAG_DONE);
  600.             {
  601.                 LT_New(Handle,
  602.                     LA_Type,            TAPEDECK_KIND,
  603.                     LATD_ButtonType,    TDBT_Previous,
  604.                     LATD_Smaller,        TRUE,
  605.                     LA_ID,                GAD_FIRST_ENTRY,
  606.                     GA_Disabled,        Disabled || IsFirst,
  607.                 TAG_DONE);
  608.  
  609.                 LT_New(Handle,
  610.                     LA_Type,            TAPEDECK_KIND,
  611.                     LATD_ButtonType,    TDBT_Rewind,
  612.                     LATD_Smaller,        TRUE,
  613.                     LA_ID,                GAD_PREVIOUS_ENTRY,
  614.                     GA_Disabled,        Disabled || IsFirst,
  615.                 TAG_DONE);
  616.  
  617.                 LT_New(Handle,
  618.                     LA_Type,            TAPEDECK_KIND,
  619.                     LATD_ButtonType,    TDBT_Play,
  620.                     LATD_Smaller,        TRUE,
  621.                     LA_ID,                GAD_NEXT_ENTRY,
  622.                     GA_Disabled,        Disabled || IsLast,
  623.                 TAG_DONE);
  624.  
  625.                 LT_New(Handle,
  626.                     LA_Type,            TAPEDECK_KIND,
  627.                     LATD_ButtonType,    TDBT_Next,
  628.                     LATD_Smaller,        TRUE,
  629.                     LA_ID,                GAD_LAST_ENTRY,
  630.                     GA_Disabled,        Disabled || IsLast,
  631.                 TAG_DONE);
  632.  
  633.                 LT_New(Handle,
  634.                     LA_Type,            BUTTON_KIND,
  635.                     LA_LabelID,            MSG_GLOBAL_CLOSE_TXT,
  636.                     LABT_EscKey,        TRUE,
  637.                     LABT_ExtraFat,        TRUE,
  638.                     LA_ID,                GAD_CLOSE,
  639.                 TAG_DONE);
  640.  
  641.                 LT_EndGroup(Handle);
  642.             }
  643.  
  644.             LT_EndGroup(Handle);
  645.         }
  646.  
  647.         if(LT_Build(Handle,
  648.             LAWN_TitleID,        MSG_PHONEBOOK_EDIT_TXT,
  649.             LAWN_UserPort,        Context->WindowPort,
  650.             LAWN_HelpHook,        &GuideHook,
  651.             WA_DepthGadget,     TRUE,
  652.             WA_DragBar,         TRUE,
  653.             WA_RMBTrap,         TRUE,
  654.             WA_Activate,        Activate,
  655.             WA_SimpleRefresh,    TRUE,
  656.             LAWN_Parent,        Context->Window,
  657.         TAG_DONE))
  658.         {
  659.             if(Activate)
  660.             {
  661.                 LT_ShowWindow(Handle,TRUE);
  662.  
  663.                 if(!Disabled)
  664.                     LT_Activate(Handle,GAD_SYSTEM_NAME);
  665.             }
  666.  
  667.             return(Handle);
  668.         }
  669.         else
  670.             LT_DeleteHandle(Handle);
  671.     }
  672.  
  673.     return(NULL);
  674. }
  675.  
  676.     /* PhoneListViewRender():
  677.      *
  678.      *    This callback routine is responsible for rendering
  679.      *    the single listview entries.
  680.      */
  681.  
  682. STATIC ULONG SAVE_DS ASM
  683. PhoneListViewRender(REG(a0) struct Hook *Hook,REG(a2) struct PhoneNode *Node,REG(a1) struct LVDrawMsg *Msg)
  684. {
  685.         /* We only know how to redraw lines. */
  686.  
  687.     if(Msg->lvdm_MethodID == LV_DRAW)
  688.     {
  689.         struct RastPort    *RPort    = Msg->lvdm_RastPort;
  690.         LONG             Count    = Node->Entry->Count + 1,
  691.                          Left    = Msg->lvdm_Bounds.MinX,
  692.                          Top    = Msg->lvdm_Bounds.MinY,
  693.                          Width    = Msg->lvdm_Bounds.MaxX - Msg->lvdm_Bounds.MinX + 1,
  694.                          Height    = Msg->lvdm_Bounds.MaxY - Msg->lvdm_Bounds.MinY + 1,
  695.                          FgPen,BgPen,
  696.                          Template,
  697.                          Len,LabelLen;
  698.         STRPTR             String;
  699.         UBYTE             Num[8];
  700.         UWORD            *Pens;
  701.  
  702.         Pens = Msg->lvdm_DrawInfo->dri_Pens;
  703.  
  704.             /* Determine the rendering pens. */
  705.  
  706.         if(Msg->lvdm_State == LVR_SELECTED)
  707.         {
  708.             FgPen = FILLTEXTPEN;
  709.             BgPen = FILLPEN;
  710.         }
  711.         else
  712.         {
  713.             FgPen = TEXTPEN;
  714.             BgPen = BACKGROUNDPEN;
  715.         }
  716.  
  717.         FgPen = Pens[FgPen];
  718.         BgPen = Pens[BgPen];
  719.  
  720.         if(Count > 0)
  721.         {
  722.             if(Pens[HIGHLIGHTTEXTPEN] != BgPen)
  723.                 FgPen = Pens[HIGHLIGHTTEXTPEN];
  724.         }
  725.  
  726.             /* Set the rendering pens. */
  727.  
  728.         SetABPenDrMd(RPort,BgPen,BgPen,JAM2);
  729.  
  730.         RectFill(RPort,Left,Top,Left + 1,Top + Height - 1);
  731.  
  732.         Left    += 2;
  733.         Width    -= 2;
  734.  
  735.             /* Determine maximum index text length. */
  736.  
  737.         Template = 3 * ((ULONG)Hook->h_Data) + TextLength(RPort," - ",3);
  738.  
  739.             /* Get the vanilla name. */
  740.  
  741.         String = &Node->Node.ln_Name[6];
  742.  
  743.             /* Has this entry been selected? */
  744.  
  745.         if(Count > 0)
  746.         {
  747.             LONG Delta;
  748.  
  749.                 /* Set up the header. */
  750.  
  751.             LimitedSPrintf(sizeof(Num),Num,"%3ld - ",Count);
  752.  
  753.                 /* Determine header length. */
  754.  
  755.             Len = TextLength(RPort,Num,strlen(Num));
  756.  
  757.                 /* Fill the space to precede the header. */
  758.  
  759.             if((Delta = Template - Len) > 0)
  760.             {
  761.                 SetAPen(RPort,BgPen);
  762.                 FillBox(RPort,Left,Top,Delta,Height);
  763.             }
  764.  
  765.                 /* Render the header, right-justified. */
  766.  
  767.             SetAPen(RPort,FgPen);
  768.  
  769.             PlaceText(RPort,Left + Delta,Top,Num,strlen(Num));
  770.         }
  771.         else
  772.         {
  773.                 /* Fill the blank space to precede the vanilla name. */
  774.  
  775.             SetAPen(RPort,BgPen);
  776.             FillBox(RPort,Left,Top,Template,Height);
  777.             SetAPen(RPort,FgPen);
  778.         }
  779.  
  780.             /* Adjust width and area left edge. */
  781.  
  782.         Left    += Template;
  783.         Width    -= Template;
  784.  
  785.             /* Determine length of vanilla name. */
  786.  
  787.         LabelLen = strlen(String);
  788.  
  789.             /* Try to make it fit. */
  790.  
  791.         LabelLen = FitText(RPort,Width,String,LabelLen);
  792.  
  793.             /* Print the vanilla name if possible. */
  794.  
  795.         if(LabelLen)
  796.         {
  797.             Len = TextLength(RPort,String,LabelLen);
  798.  
  799.             PlaceText(RPort,Left,Top,String,LabelLen);
  800.  
  801.             Left    += Len;
  802.             Width    -= Len;
  803.         }
  804.  
  805.             /* Fill the area to follow the vanilla name. */
  806.  
  807.         if(Width > 0)
  808.         {
  809.             SetAPen(RPort,BgPen);
  810.             FillBox(RPort,Left,Top,Width,Height);
  811.         }
  812.  
  813.             /* If the item happens to be disabled, draw the cross-hatch
  814.              * pattern across it.
  815.              */
  816.  
  817.         ListViewStateFill(Msg);
  818.  
  819.         return(LVCB_OK);
  820.     }
  821.     else
  822.         return(LVCB_UNKNOWN);
  823. }
  824.  
  825. LayoutHandle *
  826. CreateManagerHandle(PhoneListContext *Context,struct Window *Parent)
  827. {
  828.     STATIC WORD LabelTable[] =
  829.     {
  830.         MSG_PHONEBOOK_TAG_ALL_TXT,
  831.         MSG_PHONEBOOK_TOGGLE_ALL_TXT,
  832.         MSG_PHONEBOOK_UNTAG_ALL_TXT,
  833.         MSG_PHONEBOOK_TAG_BY_PATTERN_TXT,
  834.  
  835.         MSG_PHONEBOOK_EDIT_ENTRY_TXT,
  836.         MSG_PHONEBOOK_COPY_ENTRY_TXT,
  837.         MSG_PHONEBOOK_ADD_ENTRY_TXT,
  838.         MSG_PHONEBOOK_MAKE_GROUP_TXT,
  839.  
  840.         MSG_PHONEBOOK_DIAL_TXT,
  841.         MSG_PHONEBOOK_USE_ENTRY_TXT,
  842.         MSG_PHONEBOOK_DELETE_ENTRY_TXT,
  843.         MSG_PHONEBOOK_SPLIT_GROUP_TXT,
  844.  
  845.         -1
  846.     };
  847.  
  848.     struct List *PhoneList;
  849.     ULONG Count;
  850.     ULONG *Grouper;
  851.     LayoutHandle *Handle;
  852.     PhonebookHandle *PhoneHandle;
  853.  
  854.     PhoneList = Context->CurrentList;
  855.     Count = Context->PhoneHandle->DialMarker;
  856.     Grouper = &Context->PhoneHandle->DefaultGroup;
  857.     PhoneHandle = Context->PhoneHandle;
  858.  
  859.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  860.         LAHN_LocaleHook,&LocaleHook,
  861.     TAG_DONE))
  862.     {
  863.         STATIC struct Hook ListViewHook;
  864.  
  865.         LONG        i,Max,Size;
  866.         UBYTE        SmallString[2];
  867.         struct IBox    Bounds;
  868.         LONG        Len,LabelLen;
  869.  
  870.         InitHook(&ListViewHook,(HOOKFUNC)PhoneListViewRender,NULL);
  871.  
  872.         for(i = LabelLen = 0 ; i < NUM_ELEMENTS(LabelTable) ; i++)
  873.         {
  874.             Len = LT_LabelChars(Handle,LocaleString(LabelTable[i]));
  875.  
  876.             if(Len > LabelLen)
  877.                 LabelLen = Len;
  878.         }
  879.  
  880.         SmallString[1]    = 0;
  881.         Max                = 0;
  882.  
  883.         for(i = '0' ; i <= '9' ; i++)
  884.         {
  885.             SmallString[0] = i;
  886.  
  887.             if((Size = LT_LabelWidth(Handle,SmallString)) > Max)
  888.                 Max = Size;
  889.         }
  890.  
  891.         ListViewHook.h_Data = (APTR)Max;
  892.  
  893.         LT_New(Handle,
  894.             LA_Type,    VERTICAL_KIND,
  895.         TAG_DONE);
  896.         {
  897.             LT_New(Handle,
  898.                 LA_Type,        HORIZONTAL_KIND,
  899.                 LAGR_NoIndent,    TRUE,
  900.             TAG_DONE);
  901.             {
  902.                 LT_New(Handle,
  903.                     LA_Type,    VERTICAL_KIND,
  904.                 TAG_DONE);
  905.                 {
  906.                     LONG NumEntries;
  907.                     LONG NumColumns;
  908.                     BOOL HasEntries;
  909.  
  910.                     if(PhoneList && !IsListEmpty(PhoneList))
  911.                     {
  912.                         struct Node    *Node;
  913.                         LONG         Len;
  914.  
  915.                         HasEntries = TRUE;
  916.  
  917.                         for(Node = PhoneList->lh_Head, NumEntries = NumColumns = 0 ; Node->ln_Succ ; Node = Node->ln_Succ)
  918.                         {
  919.                             NumEntries++;
  920.  
  921.                             Len = strlen(&Node->ln_Name[6]);
  922.  
  923.                             if(Len > NumColumns)
  924.                                 NumColumns = Len;
  925.                         }
  926.  
  927.                         if(NumEntries < 6)
  928.                             NumEntries = 6;
  929.                         else
  930.                         {
  931.                             if(NumEntries > 46)
  932.                                 NumEntries = 46;
  933.                         }
  934.  
  935.                         if(NumColumns < 46)
  936.                             NumColumns = 46;
  937.                     }
  938.                     else
  939.                     {
  940.                         HasEntries = FALSE;
  941.                         NumEntries = 6;
  942.                         NumColumns = 46;
  943.                     }
  944.  
  945.                     LT_New(Handle,
  946.                         LA_Type,        CycleType,
  947.                         LACY_TabKey,    TRUE,
  948.                         GTCY_Labels,    Context->GroupLabels,
  949.                         LA_ID,            GAD_GROUPID,
  950.                         LA_ULONG,        Grouper,
  951.                     TAG_DONE);
  952.  
  953.                     LT_New(Handle,
  954.                         LA_Type,        LISTVIEW_KIND,
  955.                         LA_ID,            GAD_NAMELIST,
  956.                         LALV_Columns,    46,
  957.                         LALV_Lines,     6,
  958.                         LALV_CursorKey, TRUE,
  959.                         LALV_ResizeX,    TRUE,
  960.                         LALV_ResizeY,    TRUE,
  961.                         LALV_MaxGrowX,    NumColumns,
  962.                         LALV_MaxGrowY,    NumEntries,
  963.                         LALV_Link,        NIL_LINK,
  964.                         GTLV_CallBack,    &ListViewHook,
  965.                         GTLV_MaxPen,    GetListMaxPen(Handle->DrawInfo->dri_Pens),
  966.                         GTLV_Labels,    PhoneList,
  967.  
  968.                         Kick30 ? TAG_IGNORE :    LALV_TextAttr,    ~0,
  969.                         Kick30 ? GA_Disabled :    TAG_IGNORE,        !HasEntries,
  970.                     TAG_DONE);
  971.  
  972.                     LT_New(Handle,
  973.                         LA_Type,            BOX_KIND,
  974.                         LA_ID,                GAD_COMMENTLINE,
  975.                         LABX_Rows,            1,
  976.                         LA_Chars,            50,
  977.                         LABX_DrawBox,        TRUE,
  978.                         LABX_ReserveSpace,    TRUE,
  979.                     TAG_DONE);
  980.  
  981.                     LT_New(Handle,
  982.                         LA_Type,        HORIZONTAL_KIND,
  983.                         LAGR_Spread,    TRUE,
  984.                         LAGR_SameSize,    TRUE,
  985.                         LAGR_Spread,    TRUE,
  986.                     TAG_DONE);
  987.                     {
  988.                         LT_New(Handle,
  989.                             LA_Type,            TAPEDECK_KIND,
  990.                             LATD_ButtonType,    TDBT_Previous,
  991.                             LATD_Smaller,        TRUE,
  992.                             LA_Chars,            LabelLen,
  993.                             LA_ID,                GAD_MOVE_FIRST,
  994.                             GA_Disabled,        TRUE,
  995.                         TAG_DONE);
  996.  
  997.                         LT_New(Handle,
  998.                             LA_Type,            TAPEDECK_KIND,
  999.                             LATD_ButtonType,    TDBT_Rewind,
  1000.                             LATD_Smaller,        TRUE,
  1001.                             LA_ID,                GAD_MOVE_UP,
  1002.                             GA_Disabled,        TRUE,
  1003.                         TAG_DONE);
  1004.  
  1005.                         LT_New(Handle,
  1006.                             LA_Type,            TAPEDECK_KIND,
  1007.                             LATD_ButtonType,    TDBT_Play,
  1008.                             LATD_Smaller,        TRUE,
  1009.                             LA_ID,                GAD_MOVE_DOWN,
  1010.                             GA_Disabled,        TRUE,
  1011.                         TAG_DONE);
  1012.  
  1013.                         LT_New(Handle,
  1014.                             LA_Type,            TAPEDECK_KIND,
  1015.                             LATD_ButtonType,    TDBT_Next,
  1016.                             LATD_Smaller,        TRUE,
  1017.                             LA_ID,                GAD_MOVE_LAST,
  1018.                             GA_Disabled,        TRUE,
  1019.                         TAG_DONE);
  1020.  
  1021.                         LT_EndGroup(Handle);
  1022.                     }
  1023.  
  1024.                     LT_New(Handle,
  1025.                         LA_Type,        HORIZONTAL_KIND,
  1026.                         LAGR_NoIndent,    TRUE,
  1027.                         LAGR_SameSize,    TRUE,
  1028.                         LAGR_Spread,    TRUE,
  1029.                     TAG_DONE);
  1030.                     {
  1031.                         LT_New(Handle,
  1032.                             LA_Type,        BUTTON_KIND,
  1033.                             LA_LabelID,        MSG_PHONEBOOK_TAG_ALL_TXT,
  1034.                             LA_ID,            GAD_SELECT_ALL,
  1035.                             GA_Disabled,    !PhoneHandle->NumPhoneEntries || Count == PhoneHandle->NumPhoneEntries,
  1036.                             LA_Chars,        LabelLen,
  1037.                         TAG_DONE);
  1038.  
  1039.                         LT_New(Handle,
  1040.                             LA_Type,        BUTTON_KIND,
  1041.                             LA_LabelID,        MSG_PHONEBOOK_TOGGLE_ALL_TXT,
  1042.                             LA_ID,            GAD_TOGGLE_ALL,
  1043.                             GA_Disabled,    !PhoneHandle->NumPhoneEntries,
  1044.                         TAG_DONE);
  1045.  
  1046.                         LT_New(Handle,
  1047.                             LA_Type,        BUTTON_KIND,
  1048.                             LA_LabelID,        MSG_PHONEBOOK_UNTAG_ALL_TXT,
  1049.                             LA_ID,            GAD_CLEAR_ALL,
  1050.                             GA_Disabled,    !Count,
  1051.                         TAG_DONE);
  1052.  
  1053.                         LT_New(Handle,
  1054.                             LA_Type,        BUTTON_KIND,
  1055.                             LA_LabelID,        MSG_PHONEBOOK_TAG_BY_PATTERN_TXT,
  1056.                             LA_ID,            GAD_PATTERN,
  1057.                             GA_Disabled,    !PhoneHandle->NumPhoneEntries,
  1058.                         TAG_DONE);
  1059.  
  1060.                         LT_EndGroup(Handle);
  1061.                     }
  1062.  
  1063.                     LT_New(Handle,
  1064.                         LA_Type,        XBAR_KIND,
  1065.                     TAG_DONE);
  1066.  
  1067.                     LT_New(Handle,
  1068.                         LA_Type,        HORIZONTAL_KIND,
  1069.                         LAGR_NoIndent,    TRUE,
  1070.                         LAGR_SameSize,    TRUE,
  1071.                         LAGR_Spread,    TRUE,
  1072.                     TAG_DONE);
  1073.                     {
  1074.                         LT_New(Handle,
  1075.                             LA_Type,        BUTTON_KIND,
  1076.                             LA_LabelID,        MSG_PHONEBOOK_EDIT_ENTRY_TXT,
  1077.                             LA_Chars,        LabelLen,
  1078.                             LA_ID,            GAD_EDIT,
  1079.                             GA_Disabled,    TRUE,
  1080.                             LABT_DefaultCorrection,    TRUE,
  1081.                         TAG_DONE);
  1082.  
  1083.                         LT_New(Handle,
  1084.                             LA_Type,        BUTTON_KIND,
  1085.                             LA_LabelID,        MSG_PHONEBOOK_COPY_ENTRY_TXT,
  1086.                             LA_ID,            GAD_COPY,
  1087.                             GA_Disabled,    TRUE,
  1088.                         TAG_DONE);
  1089.  
  1090.                         LT_New(Handle,
  1091.                             LA_Type,        BUTTON_KIND,
  1092.                             LA_LabelID,        MSG_PHONEBOOK_ADD_ENTRY_TXT,
  1093.                             LA_ID,            GAD_ADD,
  1094.                         TAG_DONE);
  1095.  
  1096.                         LT_New(Handle,
  1097.                             LA_Type,        BUTTON_KIND,
  1098.                             LA_LabelID,        MSG_PHONEBOOK_MAKE_GROUP_TXT,
  1099.                             LA_ID,            GAD_MAKE_GROUP,
  1100.                             GA_Disabled,    !Count,
  1101.                         TAG_DONE);
  1102.  
  1103.                         LT_EndGroup(Handle);
  1104.                     }
  1105.  
  1106.                     LT_New(Handle,
  1107.                         LA_Type,        HORIZONTAL_KIND,
  1108.                         LAGR_NoIndent,    TRUE,
  1109.                         LAGR_SameSize,    TRUE,
  1110.                         LAGR_Spread,    TRUE,
  1111.                     TAG_DONE);
  1112.                     {
  1113.                         LT_New(Handle,
  1114.                             LA_Type,        BUTTON_KIND,
  1115.                             LA_LabelID,        MSG_PHONEBOOK_DIAL_TXT,
  1116.                             LA_ID,            GAD_DIAL,
  1117.                             GA_Disabled,    !Count || (Online && !Config->MiscConfig->ProtectiveMode),
  1118.                             LABT_ReturnKey, TRUE,
  1119.                             LA_Chars,        LabelLen,
  1120.                         TAG_DONE);
  1121.  
  1122.                         LT_New(Handle,
  1123.                             LA_Type,        BUTTON_KIND,
  1124.                             LA_LabelID,        MSG_PHONEBOOK_USE_ENTRY_TXT,
  1125.                             LA_ID,            GAD_USE,
  1126.                             GA_Disabled,    TRUE,
  1127.                         TAG_DONE);
  1128.  
  1129.                         LT_New(Handle,
  1130.                             LA_Type,        BUTTON_KIND,
  1131.                             LA_LabelID,        MSG_PHONEBOOK_DELETE_ENTRY_TXT,
  1132.                             LA_ID,            GAD_DELETE,
  1133.                             GA_Disabled,    TRUE,
  1134.                         TAG_DONE);
  1135.  
  1136.                         LT_New(Handle,
  1137.                             LA_Type,        BUTTON_KIND,
  1138.                             LA_LabelID,        MSG_PHONEBOOK_SPLIT_GROUP_TXT,
  1139.                             LA_ID,            GAD_SPLIT_GROUP,
  1140.                             GA_Disabled,    *Grouper == 0,
  1141.                         TAG_DONE);
  1142.  
  1143.                         LT_EndGroup(Handle);
  1144.                     }
  1145.  
  1146.                     LT_EndGroup(Handle);
  1147.                 }
  1148.  
  1149.                 LT_New(Handle,
  1150.                     LA_Type,        VERTICAL_KIND,
  1151.                 TAG_DONE);
  1152.                 {
  1153.                     LT_New(Handle,
  1154.                         LA_Type,    YBAR_KIND,
  1155.                     TAG_DONE);
  1156.  
  1157.                     LT_EndGroup(Handle);
  1158.                 }
  1159.  
  1160.                 LT_New(Handle,
  1161.                     LA_Type,        VERTICAL_KIND,
  1162.                     LAGR_SameSize,    TRUE,
  1163.                 TAG_DONE);
  1164.                 {
  1165.                     LT_New(Handle,
  1166.                         LA_Type,        CHECKBOX_KIND,
  1167.                         LA_LabelID,        MSG_PHONEPANEL_AUTO_DIAL_TXT,
  1168.                         LA_ID,            GAD_MAIN_AUTODIAL,
  1169.                         LA_BYTE,        &PhoneHandle->AutoDial,
  1170.                         LA_LabelPlace,    PLACE_Right,
  1171.                     TAG_DONE);
  1172.  
  1173.                     LT_New(Handle,
  1174.                         LA_Type,        CHECKBOX_KIND,
  1175.                         LA_LabelID,        MSG_PHONEPANEL_EXIT_WHEN_FINISHED_TXT,
  1176.                         LA_ID,            GAD_MAIN_EXIT_WHEN_FINISHED,
  1177.                         LA_BYTE,        &PhoneHandle->AutoExit,
  1178.                         GA_Disabled,    !PhoneHandle->AutoDial,
  1179.                         LA_LabelPlace,    PLACE_Right,
  1180.                     TAG_DONE);
  1181.  
  1182.                     LT_New(Handle,
  1183.                         LA_Type,        XBAR_KIND,
  1184.                     TAG_DONE);
  1185.  
  1186.                     LT_New(Handle,
  1187.                         LA_Type,        BUTTON_KIND,
  1188.                         LA_LabelID,        MSG_PHONEBOOK_PASSWORD_TXT,
  1189.                         LA_ID,            GAD_PASSWORD,
  1190.                     TAG_DONE);
  1191.  
  1192.                     LT_New(Handle,
  1193.                         LA_Type,        XBAR_KIND,
  1194.                     TAG_DONE);
  1195.  
  1196.                     LT_New(Handle,
  1197.                         LA_Type,        BUTTON_KIND,
  1198.                         LA_LabelID,        MSG_PHONEBOOK_LOAD_TXT,
  1199.                         LA_ID,            GAD_LOAD,
  1200.                         GA_Disabled,    GetActiveEntry(PhoneHandle) != NULL,
  1201.                     TAG_DONE);
  1202.  
  1203.                     LT_New(Handle,
  1204.                         LA_Type,        BUTTON_KIND,
  1205.                         LA_LabelID,        MSG_PHONEBOOK_MERGE_TXT,
  1206.                         LA_ID,            GAD_MERGE,
  1207.                         GA_Disabled,    !PhoneHandle->NumPhoneEntries,
  1208.                     TAG_DONE);
  1209.  
  1210.                     LT_New(Handle,
  1211.                         LA_Type,        BUTTON_KIND,
  1212.                         LA_LabelID,        MSG_PHONEBOOK_SAVE_TXT,
  1213.                         LA_ID,            GAD_SAVE,
  1214.                         GA_Disabled,    !PhoneHandle->NumPhoneEntries,
  1215.                     TAG_DONE);
  1216.  
  1217.                     LT_New(Handle,
  1218.                         LA_Type,        BUTTON_KIND,
  1219.                         LA_LabelID,        MSG_PHONEBOOK_PRINT_TXT,
  1220.                         LA_ID,            GAD_PRINT,
  1221.                         GA_Disabled,    !PhoneHandle->NumPhoneEntries,
  1222.                     TAG_DONE);
  1223.  
  1224.                     LT_New(Handle,
  1225.                         LA_Type,        BUTTON_KIND,
  1226.                         LA_LabelID,        MSG_PHONEBOOK_SORT_TXT,
  1227.                         LA_ID,            GAD_SORT,
  1228.                         GA_Disabled,    !PhoneHandle->NumPhoneEntries,
  1229.                     TAG_DONE);
  1230.  
  1231.                     LT_New(Handle,
  1232.                         LA_Type,        XBAR_KIND,
  1233.                     TAG_DONE);
  1234.  
  1235.                     LT_New(Handle,
  1236.                         LA_Type,        BUTTON_KIND,
  1237.                         LA_LabelID,        MSG_PHONEBOOK_COPY_CONFIG_TXT,
  1238.                         LA_ID,            GAD_COPY_CONFIG,
  1239.                         GA_Disabled,    !PhoneHandle->NumPhoneEntries,
  1240.                     TAG_DONE);
  1241.  
  1242.                     LT_EndGroup(Handle);
  1243.                 }
  1244.  
  1245.                 LT_EndGroup(Handle);
  1246.             }
  1247.  
  1248.             LT_EndGroup(Handle);
  1249.         }
  1250.  
  1251.         if(Parent == Window)
  1252.         {
  1253.             Bounds.Left        = WindowLeft    + Window->LeftEdge;
  1254.             Bounds.Top        = WindowTop        + Window->TopEdge;
  1255.             Bounds.Width    = WindowWidth;
  1256.             Bounds.Height    = WindowHeight;
  1257.         }
  1258.  
  1259.         if(LT_Build(Handle,
  1260.             LAWN_TitleText,        Context->WindowTitle,
  1261.             LAWN_IDCMP,         IDCMP_CLOSEWINDOW,
  1262.             LAWN_Bounds,        &Bounds,
  1263.             LAWN_HelpHook,        &GuideHook,
  1264.             LAWN_Show,            TRUE,
  1265.             LAWN_UserPort,        Context->WindowPort,
  1266.             WA_DepthGadget,        TRUE,
  1267.             WA_DragBar,            TRUE,
  1268.             WA_RMBTrap,         TRUE,
  1269.             WA_Activate,        TRUE,
  1270.             WA_CloseGadget,     TRUE,
  1271.         /*    WA_SimpleRefresh,    TRUE, */
  1272.             WA_NoCareRefresh,    TRUE,
  1273.  
  1274.             Parent == Window ? LAWN_Bounds : TAG_IGNORE,&Bounds,
  1275.             Parent == Window ? TAG_IGNORE : LAWN_Parent,Parent,
  1276.         TAG_DONE))
  1277.             return(Handle);
  1278.         else
  1279.             LT_DeleteHandle(Handle);
  1280.     }
  1281.  
  1282.     return(NULL);
  1283. }
  1284.  
  1285. LayoutHandle *
  1286. CreateSelectorHandle(struct Window *Parent,STRPTR Name,STRPTR Number,STRPTR Comment,BYTE *Mode)
  1287. {
  1288.     LayoutHandle *Handle;
  1289.  
  1290.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  1291.         LAHN_LocaleHook,&LocaleHook,
  1292.     TAG_DONE))
  1293.     {
  1294.         LT_New(Handle,
  1295.             LA_Type,    VERTICAL_KIND,
  1296.         TAG_DONE);
  1297.         {
  1298.             LT_New(Handle,
  1299.                 LA_Type,        VERTICAL_KIND,
  1300.             TAG_DONE);
  1301.             {
  1302.                 LT_New(Handle,
  1303.                     LA_Type,        CYCLE_KIND,
  1304.                     LA_ID,            GAD_SELECT_MODE,
  1305.                     LA_Chars,        40,
  1306.                     LA_BYTE,        Mode,
  1307.                     LACY_TabKey,    TRUE,
  1308.                     LACY_FirstLabel,MSG_PHONEBOOK_TAG_ENTRIES1_TXT,
  1309.                     LACY_LastLabel,    MSG_PHONEBOOK_TAG_ENTRIES2_TXT,
  1310.                 TAG_DONE);
  1311.  
  1312.                 LT_New(Handle,
  1313.                     LA_Type,        STRING_KIND,
  1314.                     LA_ID,            GAD_SELECT_NAME,
  1315.                     LA_LabelID,        MSG_PHONEBOOK_SYSTEM_NAME_TXT,
  1316.                     LA_STRPTR,        Name,
  1317.                     GTST_MaxChars,    structsizeof(PhoneHeader,Name) - 1,
  1318.                 TAG_DONE);
  1319.  
  1320.                 LT_New(Handle,
  1321.                     LA_Type,        STRING_KIND,
  1322.                     LA_ID,            GAD_SELECT_COMMENT,
  1323.                     LA_LabelID,        MSG_PHONEBOOK_COMMENT_TXT,
  1324.                     LA_STRPTR,        Comment,
  1325.                     LAST_LastGadget,TRUE,
  1326.                     GTST_MaxChars,    structsizeof(PhoneHeader,Comment) - 1,
  1327.                 TAG_DONE);
  1328.  
  1329.                 LT_New(Handle,
  1330.                     LA_Type,        STRING_KIND,
  1331.                     LA_ID,            GAD_SELECT_NUMBER,
  1332.                     LA_LabelID,        MSG_PHONEBOOK_NUMBERS_TXT,
  1333.                     LA_STRPTR,        Number,
  1334.                     GTST_MaxChars,    structsizeof(PhoneHeader,Number) - 1,
  1335.                 TAG_DONE);
  1336.  
  1337.                 LT_New(Handle,
  1338.                     LA_Type,        XBAR_KIND,
  1339.                     LAXB_FullWidth,    TRUE,
  1340.                 TAG_DONE);
  1341.  
  1342.                 LT_EndGroup(Handle);
  1343.             }
  1344.  
  1345.             LT_New(Handle,
  1346.                 LA_Type,        HORIZONTAL_KIND,
  1347.                 LAGR_SameSize,    TRUE,
  1348.                 LAGR_Spread,    TRUE,
  1349.             TAG_DONE);
  1350.             {
  1351.                 LT_New(Handle,
  1352.                     LA_Type,            BUTTON_KIND,
  1353.                     LA_ID,                GAD_SELECT_APPLY,
  1354.                     LA_LabelID,            MSG_PHONEBOOK_APPLY_TXT,
  1355.                     LABT_ExtraFat,        TRUE,
  1356.                     LABT_ReturnKey,        TRUE,
  1357.                 TAG_DONE);
  1358.  
  1359.                 LT_New(Handle,
  1360.                     LA_Type,            BUTTON_KIND,
  1361.                     LA_ID,                GAD_SELECT_APPLY_AND_CLOSE,
  1362.                     LA_LabelID,            MSG_PHONEBOOK_APPLY_AND_CLOSE_TXT,
  1363.                 TAG_DONE);
  1364.  
  1365.                 LT_New(Handle,
  1366.                     LA_Type,            BUTTON_KIND,
  1367.                     LA_ID,                GAD_SELECT_CLOSE,
  1368.                     LA_LabelID,            MSG_GLOBAL_CLOSE_TXT,
  1369.                     LABT_EscKey,        TRUE,
  1370.                 TAG_DONE);
  1371.  
  1372.                 LT_EndGroup(Handle);
  1373.             }
  1374.  
  1375.             LT_EndGroup(Handle);
  1376.         }
  1377.  
  1378.         if(LT_Build(Handle,
  1379.             LAWN_TitleID,        MSG_PHONEBOOK_EDIT_PATTERNS_TXT,
  1380.             LAWN_HelpHook,        &GuideHook,
  1381.             LAWN_Show,            TRUE,
  1382.             LAWN_Parent,        Parent,
  1383.             LAWN_UserPort,        Parent->UserPort,
  1384.             WA_DepthGadget,        TRUE,
  1385.             WA_DragBar,            TRUE,
  1386.             WA_RMBTrap,         TRUE,
  1387.             WA_Activate,        TRUE,
  1388.             WA_SimpleRefresh,    TRUE,
  1389.         TAG_DONE))
  1390.             return(Handle);
  1391.         else
  1392.             LT_DeleteHandle(Handle);
  1393.     }
  1394.  
  1395.     return(NULL);
  1396. }
  1397.  
  1398. LayoutHandle *
  1399. CreateGroupHandle(struct Window *Parent,STRPTR *Labels,ULONG Group)
  1400. {
  1401.     LayoutHandle *Handle;
  1402.  
  1403.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  1404.         LAHN_LocaleHook,&LocaleHook,
  1405.     TAG_DONE))
  1406.     {
  1407.         LT_New(Handle,
  1408.             LA_Type,    VERTICAL_KIND,
  1409.         TAG_DONE);
  1410.         {
  1411.             LT_New(Handle,
  1412.                 LA_Type,        VERTICAL_KIND,
  1413.             TAG_DONE);
  1414.             {
  1415.                 LT_New(Handle,
  1416.                     LA_Type,        CycleType,
  1417.                     LA_ID,            GAD_GROUP_LIST,
  1418.                     GTCY_Labels,    Labels,
  1419.                     GTCY_Active,    Group,
  1420.                     LACY_TabKey,    TRUE,
  1421.                     LA_LabelID,        MSG_PHONEBOOK_PICK_GROUP_TXT,
  1422.                 TAG_DONE);
  1423.  
  1424.                 LT_New(Handle,
  1425.                     LA_Type,        STRING_KIND,
  1426.                     LA_ID,            GAD_GROUP_NAME,
  1427.                     LA_LabelID,        MSG_PHONEBOOK_OR_ENTER_NAME_TXT,
  1428.                     LA_Chars,        30,
  1429.                     GTST_MaxChars,    structsizeof(PhoneGroupNode,LocalName) - 1,
  1430.                     GTST_String,    Labels[Group],
  1431.                 TAG_DONE);
  1432.  
  1433.                 LT_New(Handle,
  1434.                     LA_Type,        XBAR_KIND,
  1435.                     LAXB_FullWidth,    TRUE,
  1436.                 TAG_DONE);
  1437.  
  1438.                 LT_EndGroup(Handle);
  1439.             }
  1440.  
  1441.             LT_New(Handle,
  1442.                 LA_Type,        HORIZONTAL_KIND,
  1443.                 LAGR_SameSize,    TRUE,
  1444.                 LAGR_Spread,    TRUE,
  1445.             TAG_DONE);
  1446.             {
  1447.                 LT_New(Handle,
  1448.                     LA_Type,            BUTTON_KIND,
  1449.                     LA_ID,                GAD_GROUP_OK,
  1450.                     LA_LabelID,            MSG_GLOBAL_USE_GAD,
  1451.                     LABT_ExtraFat,        TRUE,
  1452.                     LABT_ReturnKey,        TRUE,
  1453.                 TAG_DONE);
  1454.  
  1455.                 LT_New(Handle,
  1456.                     LA_Type,            BUTTON_KIND,
  1457.                     LA_ID,                GAD_GROUP_CANCEL,
  1458.                     LA_LabelID,            MSG_GLOBAL_CANCEL_GAD,
  1459.                     LABT_EscKey,        TRUE,
  1460.                 TAG_DONE);
  1461.  
  1462.                 LT_EndGroup(Handle);
  1463.             }
  1464.  
  1465.             LT_EndGroup(Handle);
  1466.         }
  1467.  
  1468.         if(LT_Build(Handle,
  1469.             LAWN_TitleID,        MSG_PHONEBOOK_SELECT_GROUP_TXT,
  1470.             LAWN_HelpHook,        &GuideHook,
  1471.             LAWN_Show,            TRUE,
  1472.             LAWN_Parent,        Parent,
  1473.             LAWN_UserPort,        Parent->UserPort,
  1474.             WA_DepthGadget,        TRUE,
  1475.             WA_DragBar,            TRUE,
  1476.             WA_RMBTrap,         TRUE,
  1477.             WA_Activate,        TRUE,
  1478.             WA_SimpleRefresh,    TRUE,
  1479.         TAG_DONE))
  1480.         {
  1481.             LT_Activate(Handle,GAD_GROUP_NAME);
  1482.  
  1483.             return(Handle);
  1484.         }
  1485.         else
  1486.             LT_DeleteHandle(Handle);
  1487.     }
  1488.  
  1489.     return(NULL);
  1490. }
  1491.  
  1492. LayoutHandle *
  1493. CreateSortHandle(struct Window *Parent,WORD *Criteria,BOOL *Reverse)
  1494. {
  1495.     LayoutHandle *Handle;
  1496.  
  1497.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  1498.         LAHN_LocaleHook,&LocaleHook,
  1499.     TAG_DONE))
  1500.     {
  1501.         LT_New(Handle,
  1502.             LA_Type,    HORIZONTAL_KIND,
  1503.         TAG_DONE);
  1504.         {
  1505.             LT_New(Handle,
  1506.                 LA_Type,        VERTICAL_KIND,
  1507.             TAG_DONE);
  1508.             {
  1509.                 LT_New(Handle,
  1510.                     LA_Type,        VERTICAL_KIND,
  1511.                 TAG_DONE);
  1512.                 {
  1513.                     LT_New(Handle,
  1514.                         LA_Type,        MX_KIND,
  1515.                         LA_ID,            GAD_SORT_CRITERIA,
  1516.                         LAMX_FirstLabel,MSG_PHONEBOOK_SORTORDER1_TXT,
  1517.                         LAMX_LastLabel,    MSG_PHONEBOOK_SORTORDER4_TXT,
  1518.                         LAMX_TabKey,    TRUE,
  1519.                         LA_WORD,        Criteria,
  1520.                         LA_LabelID,        MSG_SORT_CRITERIA_TXT,
  1521.                     TAG_DONE);
  1522.  
  1523.                     LT_New(Handle,
  1524.                         LA_Type,        XBAR_KIND,
  1525.                     TAG_DONE);
  1526.  
  1527.                     LT_EndGroup(Handle);
  1528.                 }
  1529.  
  1530.                 LT_New(Handle,
  1531.                     LA_Type,        VERTICAL_KIND,
  1532.                 TAG_DONE);
  1533.                 {
  1534.                     LT_New(Handle,
  1535.                         LA_Type,        CHECKBOX_KIND,
  1536.                         LA_ID,            GAD_SORT_REVERSE,
  1537.                         LA_LabelID,        MSG_REVERSE_ORDER_TXT,
  1538.                         LA_BOOL,        Reverse,
  1539.                     TAG_DONE);
  1540.  
  1541.                     LT_EndGroup(Handle);
  1542.                 }
  1543.  
  1544.                 LT_EndGroup(Handle);
  1545.             }
  1546.  
  1547.             LT_New(Handle,
  1548.                 LA_Type,        VERTICAL_KIND,
  1549.             TAG_DONE);
  1550.             {
  1551.                 LT_New(Handle,
  1552.                     LA_Type,        YBAR_KIND,
  1553.                 TAG_DONE);
  1554.  
  1555.                 LT_EndGroup(Handle);
  1556.             }
  1557.  
  1558.             LT_New(Handle,
  1559.                 LA_Type,        VERTICAL_KIND,
  1560.                 LAGR_SameSize,    TRUE,
  1561.                 LAGR_Spread,    TRUE,
  1562.             TAG_DONE);
  1563.             {
  1564.                 LT_New(Handle,
  1565.                     LA_Type,            BUTTON_KIND,
  1566.                     LA_ID,                GAD_SORT_IT,
  1567.                     LA_LabelID,            MSG_JUST_SORT_TXT,
  1568.                     LABT_ReturnKey,        TRUE,
  1569.                 TAG_DONE);
  1570.  
  1571.                 LT_New(Handle,
  1572.                     LA_Type,            BUTTON_KIND,
  1573.                     LA_ID,                GAD_SORT_AND_CLOSE,
  1574.                     LA_LabelID,            MSG_SORT_AND_CLOSE_TXT,
  1575.                 TAG_DONE);
  1576.  
  1577.                 LT_New(Handle,
  1578.                     LA_Type,            BUTTON_KIND,
  1579.                     LA_ID,                GAD_SORT_JUST_CLOSE,
  1580.                     LA_LabelID,            MSG_GLOBAL_CLOSE_TXT,
  1581.                     LABT_EscKey,        TRUE,
  1582.                 TAG_DONE);
  1583.  
  1584.                 LT_EndGroup(Handle);
  1585.             }
  1586.  
  1587.             LT_EndGroup(Handle);
  1588.         }
  1589.  
  1590.         if(LT_Build(Handle,
  1591.             LAWN_TitleID,        MSG_SORT_PHONEBOOK_TXT,
  1592.             LAWN_HelpHook,        &GuideHook,
  1593.             LAWN_Show,            TRUE,
  1594.             LAWN_Parent,        Parent,
  1595.             LAWN_UserPort,        Parent->UserPort,
  1596.             WA_DepthGadget,        TRUE,
  1597.             WA_DragBar,            TRUE,
  1598.             WA_RMBTrap,         TRUE,
  1599.             WA_Activate,        TRUE,
  1600.             WA_SimpleRefresh,    TRUE,
  1601.         TAG_DONE))
  1602.             return(Handle);
  1603.         else
  1604.             LT_DeleteHandle(Handle);
  1605.     }
  1606.  
  1607.     return(NULL);
  1608. }
  1609.  
  1610. VOID
  1611. UpdatePasswordWindow(LayoutHandle *Handle)
  1612. {
  1613.     UBYTE    Password1[MAX_PASSWORD_LENGTH+1],
  1614.             Password2[MAX_PASSWORD_LENGTH+1];
  1615.     BOOL    Disabled;
  1616.  
  1617.     memset(Password1,0,sizeof(Password1));
  1618.     memset(Password2,0,sizeof(Password2));
  1619.  
  1620.     strcpy(Password1,LT_GetString(Handle,GAD_NEW_PASSWORD));
  1621.     strcpy(Password2,LT_GetString(Handle,GAD_REPEAT_PASSWORD));
  1622.  
  1623.     if(Password1[0] && !memcmp(Password1,Password2,MAX_PASSWORD_LENGTH))
  1624.         Disabled = FALSE;
  1625.     else
  1626.         Disabled = TRUE;
  1627.  
  1628.     LT_SetAttributes(Handle,GAD_USE_NEW_PASSWORD,
  1629.         GA_Disabled,Disabled,
  1630.     TAG_DONE);
  1631. }
  1632.  
  1633. BOOL
  1634. GetWindowPassword(LayoutHandle *Handle,STRPTR Password)
  1635. {
  1636.     UBYTE    Password1[MAX_PASSWORD_LENGTH+1],
  1637.             Password2[MAX_PASSWORD_LENGTH+1];
  1638.  
  1639.     memset(Password1,0,sizeof(Password1));
  1640.     memset(Password2,0,sizeof(Password2));
  1641.  
  1642.     strcpy(Password1,LT_GetString(Handle,GAD_NEW_PASSWORD));
  1643.     strcpy(Password2,LT_GetString(Handle,GAD_REPEAT_PASSWORD));
  1644.  
  1645.     if(Password1[0] && !memcmp(Password1,Password2,MAX_PASSWORD_LENGTH+1))
  1646.     {
  1647.         strcpy(Password,Password1);
  1648.  
  1649.         return(TRUE);
  1650.     }
  1651.     else
  1652.     {
  1653.         LONG ID;
  1654.  
  1655.         LT_SetAttributes(Handle,GAD_USE_NEW_PASSWORD,
  1656.             GA_Disabled,TRUE,
  1657.         TAG_DONE);
  1658.  
  1659.         if(!Password2[0])
  1660.             ID = GAD_REPEAT_PASSWORD;
  1661.         else
  1662.             ID = GAD_NEW_PASSWORD;
  1663.  
  1664.         LT_Activate(Handle,ID);
  1665.  
  1666.         DisplayBeep(Handle->Window->WScreen);
  1667.  
  1668.         return(FALSE);
  1669.     }
  1670. }
  1671.  
  1672. LayoutHandle *
  1673. CreatePasswordHandle(struct Window *Parent,BOOL PasswordEnabled)
  1674. {
  1675.     LayoutHandle *Handle;
  1676.  
  1677.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  1678.         LAHN_LocaleHook,    &LocaleHook,
  1679.         LAHN_AutoActivate,    TRUE,
  1680.     TAG_DONE))
  1681.     {
  1682.         LT_New(Handle,
  1683.             LA_Type,VERTICAL_KIND,
  1684.         TAG_DONE);
  1685.         {
  1686.             LT_New(Handle,
  1687.                 LA_Type,VERTICAL_KIND,
  1688.             TAG_DONE);
  1689.             {
  1690.                 LT_New(Handle,
  1691.                     LA_Type,        PASSWORD_KIND,
  1692.                     LA_LabelID,        MSG_ENTER_PASSWORD_GAD,
  1693.                     LA_ID,            GAD_NEW_PASSWORD,
  1694.                     LA_Chars,        20,
  1695.                     GTST_MaxChars,    MAX_PASSWORD_LENGTH + 1,
  1696.                     LAST_Activate,    TRUE,
  1697.                 TAG_DONE);
  1698.  
  1699.                 LT_New(Handle,
  1700.                     LA_Type,        PASSWORD_KIND,
  1701.                     LA_LabelID,        MSG_REPEAT_PASSWORD_GAD,
  1702.                     LA_ID,            GAD_REPEAT_PASSWORD,
  1703.                     GTST_MaxChars,    MAX_PASSWORD_LENGTH + 1,
  1704.                     LAST_LastGadget,TRUE,
  1705.                 TAG_DONE);
  1706.  
  1707.                 LT_EndGroup(Handle);
  1708.             }
  1709.  
  1710.             LT_New(Handle,
  1711.                 LA_Type,HORIZONTAL_KIND,
  1712.             TAG_DONE);
  1713.             {
  1714.                 LT_New(Handle,
  1715.                     LA_Type,        XBAR_KIND,
  1716.                     LAXB_FullWidth,    TRUE,
  1717.                 TAG_DONE);
  1718.  
  1719.                 LT_EndGroup(Handle);
  1720.             }
  1721.  
  1722.             LT_New(Handle,
  1723.                 LA_Type,        HORIZONTAL_KIND,
  1724.                 LAGR_SameSize,    TRUE,
  1725.                 LAGR_Spread,    TRUE,
  1726.             TAG_DONE);
  1727.             {
  1728.                 LT_New(Handle,
  1729.                     LA_Type,        BUTTON_KIND,
  1730.                     LA_LabelID,        MSG_USE_NEWPASSWORD_GAD,
  1731.                     LA_ID,            GAD_USE_NEW_PASSWORD,
  1732.                     GA_Disabled,    TRUE,
  1733.                     LABT_ExtraFat,    TRUE,
  1734.                     LABT_ReturnKey,    TRUE,
  1735.                 TAG_DONE);
  1736.  
  1737.                 if(PasswordEnabled)
  1738.                 {
  1739.                     LT_New(Handle,
  1740.                         LA_Type,        BUTTON_KIND,
  1741.                         LA_LabelID,        MSG_CLEAR_PASSWORD_GAD,
  1742.                         LA_ID,            GAD_CLEAR_PASSWORD,
  1743.                         LABT_ExtraFat,    TRUE,
  1744.                     TAG_DONE);
  1745.                 }
  1746.  
  1747.                 LT_New(Handle,
  1748.                     LA_Type,        BUTTON_KIND,
  1749.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  1750.                     LA_ID,            GAD_CANCEL_PASSWORD,
  1751.                     LABT_EscKey,    TRUE,
  1752.                 TAG_DONE);
  1753.  
  1754.                 LT_EndGroup(Handle);
  1755.             }
  1756.  
  1757.             LT_EndGroup(Handle);
  1758.         }
  1759.  
  1760.         if(LT_Build(Handle,
  1761.             LAWN_TitleID,        MSG_ENTER_PASSWORD_TXT,
  1762.             LAWN_HelpHook,        &GuideHook,
  1763.             LAWN_Show,            TRUE,
  1764.             LAWN_Parent,        Parent,
  1765.             LAWN_UserPort,        Parent->UserPort,
  1766.             WA_DepthGadget,        TRUE,
  1767.             WA_DragBar,            TRUE,
  1768.             WA_RMBTrap,         TRUE,
  1769.             WA_Activate,        TRUE,
  1770.             WA_SimpleRefresh,    TRUE,
  1771.         TAG_DONE))
  1772.             return(Handle);
  1773.         else
  1774.             LT_DeleteHandle(Handle);
  1775.     }
  1776.  
  1777.     return(NULL);
  1778. }
  1779.